package de.milo.map.tile;

import org.newdawn.slick.Renderable;

/**
 * The interface for all the different maptiles in this game.
 * @author Mizi
 *
 */
public interface MapTile extends Renderable
{
	/**
	 * Get an info text for this tile.
	 * @return info text
	 */
	public String getInfo();
	
	/**
	 * Indicates if this tile is visible to the gameactor / player.
	 * @return <code>true</code> if this tile is visible, else false
	 */
	public boolean isVisible();
	
	/**
	 * Sets the visibility of a tile.
	 * @param isVisible sets the visibility of a tile
	 */
	public void setVisible(boolean isVisible);
	
	/**
	 * Draws a portion of the tile.
	 * @param x x-position of the tile
	 * @param y y-position of the tile
	 * @param offsetX the horizontal offset from the top left corner of the tile
	 * @param offsetY the vertical offset from the top left corner of the tile
	 * @param width the width of the tile portion
	 * @param height the height of the tile portion
	 */
	public void draw(float x, float y, int offsetX, int offsetY, int width, int height);
	
	public void draw(float x, float y, float x2, float y2, int offsetX, int offsetY, int width, int height);
}
